home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / mitchell.c < prev    next >
C/C++ Source or Header  |  2000-05-04  |  61KB  |  1,622 lines

  1. /***************************************************************************
  2.  
  3. "Mitchell hardware". Actually used mostly by Capcom.
  4.  
  5. All games run on the same hardware except mgakuen, which runs on an
  6. earlier version, without RAM banking, not encrypted (standard Z80)
  7. and without EEPROM.
  8.  
  9. Other games that might run on this hardware:
  10. "Chi-toitsu"(YUGA 1988)-Another version of"Mahjong Gakuen"
  11. "MIRAGE -Youjyu mahjong den-"(MITCHELL 1994)
  12.  
  13. Notes:
  14. - Super Pang has a protection which involves copying code stored in the
  15.   EEPROM to RAM and execute it from there. The first time the game is run,
  16.   you have to keep the player 1 start button pressed until the title screen
  17.   appears to force the game to initialize the EEPROM, otherwise it will not
  18.   work.
  19.   This is simultaed with a kluge in input_r.
  20.  
  21. TODO:
  22. - understand what bits 0 and 3 of input port 0x05 are
  23. - ball speed is erratic in Block Block. It was not like this at one point.
  24.   This is probably related to interrupts and maybe to the above bits.
  25.  
  26. ***************************************************************************/
  27.  
  28. #include "driver.h"
  29. #include "vidhrdw/generic.h"
  30. #include "machine/eeprom.h"
  31.  
  32. /* in machine/kabuki.c */
  33. void mgakuen2_decode(void);
  34. void pang_decode(void);
  35. void cworld_decode(void);
  36. void hatena_decode(void);
  37. void spang_decode(void);
  38. void sbbros_decode(void);
  39. void marukin_decode(void);
  40. void qtono1_decode(void);
  41. void qsangoku_decode(void);
  42. void block_decode(void);
  43.  
  44.  
  45. int  pang_vh_start(void);
  46. void pang_vh_stop(void);
  47. void pang_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  48.  
  49. WRITE_HANDLER( mgakuen_paletteram_w );
  50. READ_HANDLER( mgakuen_paletteram_r );
  51. WRITE_HANDLER( mgakuen_videoram_w );
  52. READ_HANDLER( mgakuen_videoram_r );
  53. WRITE_HANDLER( mgakuen_objram_w );
  54. READ_HANDLER( mgakuen_objram_r );
  55.  
  56. WRITE_HANDLER( pang_video_bank_w );
  57. WRITE_HANDLER( pang_videoram_w );
  58. READ_HANDLER( pang_videoram_r );
  59. WRITE_HANDLER( pang_colorram_w );
  60. READ_HANDLER( pang_colorram_r );
  61. WRITE_HANDLER( pang_gfxctrl_w );
  62. WRITE_HANDLER( pang_paletteram_w );
  63. READ_HANDLER( pang_paletteram_r );
  64.  
  65. extern unsigned char *pang_videoram;
  66. extern unsigned char *pang_colorram;
  67.  
  68. extern size_t pang_videoram_size;
  69.  
  70.  
  71.  
  72. static WRITE_HANDLER( pang_bankswitch_w )
  73. {
  74.     int bankaddress;
  75.     unsigned char *RAM = memory_region(REGION_CPU1);
  76.  
  77.     bankaddress = 0x10000 + (data & 0x0f) * 0x4000;
  78.  
  79.     cpu_setbank(1,&RAM[bankaddress]);
  80. }
  81.  
  82.  
  83.  
  84. /***************************************************************************
  85.  
  86.   EEPROM
  87.  
  88. ***************************************************************************/
  89.  
  90. static struct EEPROM_interface eeprom_interface =
  91. {
  92.     6,        /* address bits */
  93.     16,        /* data bits */
  94.     "0110",    /*  read command */
  95.     "0101",    /* write command */
  96.     "0111"    /* erase command */
  97. };
  98.  
  99. static unsigned char *nvram;
  100. static size_t nvram_size;
  101. static int init_eeprom_count;
  102.  
  103. static void nvram_handler(void *file,int read_or_write)
  104. {
  105.     if (read_or_write)
  106.     {
  107.         EEPROM_save(file);                    /* EEPROM */
  108.         if (nvram_size)    /* Super Pang, Block Block */
  109.             osd_fwrite(file,nvram,nvram_size);    /* NVRAM */
  110.     }
  111.     else
  112.     {
  113.         EEPROM_init(&eeprom_interface);
  114.  
  115.         if (file)
  116.         {
  117.             init_eeprom_count = 0;
  118.             EEPROM_load(file);                    /* EEPROM */
  119.             if (nvram_size)    /* Super Pang, Block Block */
  120.             osd_fread(file,nvram,nvram_size);    /* NVRAM */
  121.         }
  122.         else
  123.             init_eeprom_count = 1000;    /* for Super Pang */
  124.     }
  125. }
  126.  
  127. static READ_HANDLER( pang_port5_r )
  128. {
  129.     int bit;
  130.     extern struct GameDriver driver_mgakuen2;
  131.  
  132.     bit = EEPROM_read_bit() << 7;
  133.  
  134.     /* bits 0 and (sometimes) 3 are checked in the interrupt handler. */
  135.     /* Maybe they are vblank related, but I'm not sure. */
  136.     /* bit 3 is checked before updating the palette so it really seems to be vblank. */
  137.     /* Many games require two interrupts per frame and for these bits to toggle, */
  138.     /* otherwise music doesn't work. */
  139.     if (cpu_getiloops() & 1) bit |= 0x01;
  140.     else bit |= 0x08;
  141. if (Machine->gamedrv == &driver_mgakuen2)    /* hack... music doesn't work otherwise */
  142.     bit ^= 0x08;
  143.  
  144.     return (input_port_0_r(0) & 0x76) | bit;
  145. }
  146.  
  147. static WRITE_HANDLER( eeprom_cs_w )
  148. {
  149.     EEPROM_set_cs_line(data ? CLEAR_LINE : ASSERT_LINE);
  150. }
  151.  
  152. static WRITE_HANDLER( eeprom_clock_w )
  153. {
  154.     EEPROM_set_clock_line(data ? CLEAR_LINE : ASSERT_LINE);
  155. }
  156.  
  157. static WRITE_HANDLER( eeprom_serial_w )
  158. {
  159.     EEPROM_write_bit(data);
  160. }
  161.  
  162.  
  163.  
  164. /***************************************************************************
  165.  
  166.   Input handling
  167.  
  168. ***************************************************************************/
  169.  
  170. static int dial[2],dial_selected;
  171.  
  172. static READ_HANDLER( block_input_r )
  173. {
  174.     static int dir[2];
  175.  
  176.     if (dial_selected)
  177.     {
  178.         int delta;
  179.  
  180.         delta = (readinputport(4 + offset) - dial[offset]) & 0xff;
  181.         if (delta & 0x80)
  182.         {
  183.             delta = (-delta) & 0xff;
  184.             if (dir[offset])
  185.             {
  186.             /* don't report movement on a direction change, otherwise it will stutter */
  187.                 dir[offset] = 0;
  188.                 delta = 0;
  189.             }
  190.         }
  191.         else if (delta > 0)
  192.         {
  193.             if (dir[offset] == 0)
  194.             {
  195.             /* don't report movement on a direction change, otherwise it will stutter */
  196.                 dir[offset] = 1;
  197.                 delta = 0;
  198.             }
  199.         }
  200.         if (delta > 0x3f) delta = 0x3f;
  201.         return delta << 2;
  202.     }
  203.     else
  204.     {
  205.         int res;
  206.  
  207.         res = readinputport(2 + offset) & 0xf7;
  208.         if (dir[offset]) res |= 0x08;
  209.  
  210.         return res;
  211.     }
  212. }
  213.  
  214. static WRITE_HANDLER( block_dial_control_w )
  215. {
  216.     if (data == 0x08)
  217.     {
  218.         /* reset the dial counters */
  219.         dial[0] = readinputport(4);
  220.         dial[1] = readinputport(5);
  221.     }
  222.     else if (data == 0x80)
  223.         dial_selected = 0;
  224.     else
  225.         dial_selected = 1;
  226. }
  227.  
  228.  
  229. static int keymatrix;
  230.  
  231. static READ_HANDLER( mahjong_input_r )
  232. {
  233.     int i;
  234.  
  235.     for (i = 0;i < 5;i++)
  236.         if (keymatrix & (0x80 >> i)) return readinputport(2 + 5 * offset + i);
  237.  
  238.     return 0xff;
  239. }
  240.  
  241. static WRITE_HANDLER( mahjong_input_select_w )
  242. {
  243.     keymatrix = data;
  244. }
  245.  
  246.  
  247. static int input_type;
  248.  
  249. static READ_HANDLER( input_r )
  250. {
  251.     switch (input_type)
  252.     {
  253.         case 0:
  254.         default:
  255.             return readinputport(1 + offset);
  256.             break;
  257.         case 1:    /* Mahjong games */
  258.             if (offset) return mahjong_input_r(offset-1);
  259.             else return readinputport(1);
  260.             break;
  261.         case 2:    /* Block Block - dial control */
  262.             if (offset) return block_input_r(offset-1);
  263.             else return readinputport(1);
  264.             break;
  265.         case 3:    /* Super Pang - simulate START 1 press to initialize EEPROM */
  266.             if (offset || init_eeprom_count == 0) return readinputport(1 + offset);
  267.             else
  268.             {
  269.                 init_eeprom_count--;
  270.                 return readinputport(1) & ~0x08;
  271.             }
  272.             break;
  273.     }
  274. }
  275.  
  276. static WRITE_HANDLER( input_w )
  277. {
  278.     switch (input_type)
  279.     {
  280.         case 0:
  281.         default:
  282. logerror("PC %04x: write %02x to port 01\n",cpu_get_pc(),data);
  283.             break;
  284.         case 1:
  285.             mahjong_input_select_w(offset,data);
  286.             break;
  287.         case 2:
  288.             block_dial_control_w(offset,data);
  289.             break;
  290.     }
  291. }
  292.  
  293.  
  294.  
  295. /***************************************************************************
  296.  
  297.   Memory handlers
  298.  
  299. ***************************************************************************/
  300.  
  301. static struct MemoryReadAddress mgakuen_readmem[] =
  302. {
  303.     { 0x0000, 0x7fff, MRA_ROM },
  304.     { 0x8000, 0xbfff, MRA_BANK1 },
  305.     { 0xc000, 0xc7ff, mgakuen_paletteram_r },    /* palette RAM */
  306.     { 0xc800, 0xcfff, pang_colorram_r },    /* Attribute RAM */
  307.     { 0xd000, 0xdfff, mgakuen_videoram_r },    /* char RAM */
  308.     { 0xe000, 0xefff, MRA_RAM },    /* Work RAM */
  309.     { 0xf000, 0xffff, mgakuen_objram_r },    /* OBJ RAM */
  310.     { -1 }  /* end of table */
  311. };
  312.  
  313. static struct MemoryWriteAddress mgakuen_writemem[] =
  314. {
  315.     { 0x0000, 0xbfff, MWA_ROM },
  316.     { 0xc000, 0xc7ff, mgakuen_paletteram_w },
  317.     { 0xc800, 0xcfff, pang_colorram_w, &pang_colorram },
  318.     { 0xd000, 0xdfff, mgakuen_videoram_w, &pang_videoram, &pang_videoram_size },
  319.     { 0xe000, 0xefff, MWA_RAMROM },
  320.     { 0xf000, 0xffff, mgakuen_objram_w },    /* OBJ RAM */
  321.     { -1 }  /* end of table */
  322. };
  323.  
  324. static struct MemoryReadAddress readmem[] =
  325. {
  326.     { 0x0000, 0x7fff, MRA_ROM },
  327.     { 0x8000, 0xbfff, MRA_BANK1 },
  328.     { 0xc000, 0xc7ff, pang_paletteram_r },    /* Banked palette RAM */
  329.     { 0xc800, 0xcfff, pang_colorram_r },    /* Attribute RAM */
  330.     { 0xd000, 0xdfff, pang_videoram_r },    /* Banked char / OBJ RAM */
  331.     { 0xe000, 0xffff, MRA_RAM },    /* Work RAM */
  332.     { -1 }  /* end of table */
  333. };
  334.  
  335. static struct MemoryWriteAddress writemem[] =
  336. {
  337.     { 0x0000, 0xbfff, MWA_ROM },
  338.     { 0xc000, 0xc7ff, pang_paletteram_w },
  339.     { 0xc800, 0xcfff, pang_colorram_w, &pang_colorram },
  340.     { 0xd000, 0xdfff, pang_videoram_w, &pang_videoram, &pang_videoram_size },
  341.     { 0xe000, 0xffff, MWA_RAMROM },
  342.     { -1 }  /* end of table */
  343. };
  344.  
  345. static struct IOReadPort readport[] =
  346. {
  347.     { 0x00, 0x02, input_r },    /* Super Pang needs a kludge to initialize EEPROM;
  348.                         the Mahjong games and Block Block need special input treatment */
  349.     { 0x03, 0x03, input_port_12_r },    /* mgakuen only */
  350.     { 0x04, 0x04, input_port_13_r },    /* mgakuen only */
  351.     { 0x05, 0x05, pang_port5_r },
  352.     { -1 }  /* end of table */
  353. };
  354.  
  355. static struct IOWritePort writeport[] =
  356. {
  357.     { 0x00, 0x00, pang_gfxctrl_w },    /* Palette bank, layer enable, coin counters, more */
  358.     { 0x01, 0x01, input_w },
  359.     { 0x02, 0x02, pang_bankswitch_w },      /* Code bank register */
  360.     { 0x03, 0x03, YM2413_data_port_0_w },
  361.     { 0x04, 0x04, YM2413_register_port_0_w },
  362.     { 0x05, 0x05, OKIM6295_data_0_w },
  363.     { 0x06, 0x06, MWA_NOP },    /* watchdog? irq ack? */
  364.     { 0x07, 0x07, pang_video_bank_w },      /* Video RAM bank register */
  365.     { 0x08, 0x08, eeprom_cs_w },
  366.     { 0x10, 0x10, eeprom_clock_w },
  367.     { 0x18, 0x18, eeprom_serial_w },
  368.     { -1 }  /* end of table */
  369. };
  370.  
  371.  
  372.  
  373. INPUT_PORTS_START( mgakuen )
  374.     PORT_START      /* DSW */
  375.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  376.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  377.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  378.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  379.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  380.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  381.  
  382.     PORT_START      /* IN0 */
  383.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  384.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  385.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  386.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  387.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  388.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  389.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  390.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  391.  
  392.     PORT_START      /* IN1 */
  393.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  394.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  395.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  396.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  397.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 M", KEYCODE_M, IP_JOY_NONE )
  398.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 I", KEYCODE_I, IP_JOY_NONE )
  399.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 E", KEYCODE_E, IP_JOY_NONE )
  400.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 A", KEYCODE_A, IP_JOY_NONE )
  401.  
  402.     PORT_START      /* IN1 */
  403.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  404.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  405.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  406.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  407.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 N", KEYCODE_N, IP_JOY_NONE )
  408.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 J", KEYCODE_J, IP_JOY_NONE )
  409.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 F", KEYCODE_F, IP_JOY_NONE )
  410.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 B", KEYCODE_B, IP_JOY_NONE )
  411.  
  412.     PORT_START      /* IN1 */
  413.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  414.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  415.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  416.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Ron", KEYCODE_Z, IP_JOY_NONE )
  417.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Chi", KEYCODE_SPACE, IP_JOY_NONE )
  418.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 K", KEYCODE_K, IP_JOY_NONE )
  419.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 G", KEYCODE_G, IP_JOY_NONE )
  420.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 C", KEYCODE_C, IP_JOY_NONE )
  421.  
  422.     PORT_START      /* IN1 */
  423.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  424.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  425.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  426.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  427.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Pon", KEYCODE_LALT, IP_JOY_NONE )
  428.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 L", KEYCODE_L, IP_JOY_NONE )
  429.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 H", KEYCODE_H, IP_JOY_NONE )
  430.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 D", KEYCODE_D, IP_JOY_NONE )
  431.  
  432.     PORT_START      /* IN1 */
  433.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  434.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  435.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  436.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  437.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Flip", KEYCODE_X, IP_JOY_NONE )
  438.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  439.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  440.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  441.  
  442.     PORT_START      /* IN2 */
  443.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  444.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  445.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
  446.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  447.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 M", KEYCODE_M, IP_JOY_NONE )
  448.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 I", KEYCODE_I, IP_JOY_NONE )
  449.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 E", KEYCODE_E, IP_JOY_NONE )
  450.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 A", KEYCODE_A, IP_JOY_NONE )
  451.  
  452.     PORT_START      /* IN2 */
  453.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  454.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  455.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  456.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  457.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 N", KEYCODE_N, IP_JOY_NONE )
  458.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 J", KEYCODE_J, IP_JOY_NONE )
  459.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 F", KEYCODE_F, IP_JOY_NONE )
  460.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 B", KEYCODE_B, IP_JOY_NONE )
  461.  
  462.     PORT_START      /* IN2 */
  463.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  464.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  465.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  466.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Ron", KEYCODE_Z, IP_JOY_NONE )
  467.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Chi", KEYCODE_SPACE, IP_JOY_NONE )
  468.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 K", KEYCODE_K, IP_JOY_NONE )
  469.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 G", KEYCODE_G, IP_JOY_NONE )
  470.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 C", KEYCODE_C, IP_JOY_NONE )
  471.  
  472.     PORT_START      /* IN2 */
  473.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  474.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  475.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  476.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  477.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Pon", KEYCODE_LALT, IP_JOY_NONE )
  478.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 L", KEYCODE_L, IP_JOY_NONE )
  479.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 H", KEYCODE_H, IP_JOY_NONE )
  480.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 D", KEYCODE_D, IP_JOY_NONE )
  481.  
  482.     PORT_START      /* IN2 */
  483.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  484.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  485.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  486.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  487.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Flip", KEYCODE_X, IP_JOY_NONE )
  488.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  489.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  490.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  491.  
  492.     PORT_START    /* DSW1 */
  493.     PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
  494.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  495.     PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
  496.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  497.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
  498.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  499.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
  500.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  501.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_6C ) )
  502.     PORT_DIPNAME( 0x08, 0x08, "Rules" )
  503.     PORT_DIPSETTING(    0x08, "Kantou" )
  504.     PORT_DIPSETTING(    0x00, "Kansai" )
  505.     PORT_DIPNAME( 0x10, 0x00, "Harness Type" )
  506.     PORT_DIPSETTING(    0x10, "Generic" )
  507.     PORT_DIPSETTING(    0x00, "Royal Mahjong" )
  508.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
  509.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  510.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  511.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  512.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  513.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  514.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  515.  
  516.     PORT_START    /* DSW2 */
  517.     PORT_DIPNAME( 0x03, 0x03, "Player 1 Skill" )
  518.     PORT_DIPSETTING(    0x03, "Weak" )
  519.     PORT_DIPSETTING(    0x02, "Normal" )
  520.     PORT_DIPSETTING(    0x01, "Strong" )
  521.     PORT_DIPSETTING(    0x00, "Very Strong" )
  522.     PORT_DIPNAME( 0x0c, 0x0c, "Player 1 Skill" )
  523.     PORT_DIPSETTING(    0x0c, "Weak" )
  524.     PORT_DIPSETTING(    0x08, "Normal" )
  525.     PORT_DIPSETTING(    0x04, "Strong" )
  526.     PORT_DIPSETTING(    0x00, "Very Strong" )
  527.     PORT_DIPNAME( 0x10, 0x00, "Music" )
  528.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  529.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  530.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
  531.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  532.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  533.     PORT_DIPNAME( 0x40, 0x00, "Help Mode" )
  534.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  535.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  536.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  537.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  538.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  539. INPUT_PORTS_END
  540.  
  541. INPUT_PORTS_START( marukin )
  542.     PORT_START      /* DSW */
  543.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  544.     PORT_BITX(0x02, 0x02, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  545.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  546.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  547.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  548.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  549.  
  550.     PORT_START      /* IN0 */
  551.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode farther down */
  552.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  553.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  554.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  555.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  556.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  557.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  558.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  559.  
  560.     PORT_START      /* IN1 */
  561.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  562.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  563.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  564.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  565.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 M", KEYCODE_M, IP_JOY_NONE )
  566.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 I", KEYCODE_I, IP_JOY_NONE )
  567.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 E", KEYCODE_E, IP_JOY_NONE )
  568.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 A", KEYCODE_A, IP_JOY_NONE )
  569.  
  570.     PORT_START      /* IN1 */
  571.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  572.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  573.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  574.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  575.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 N", KEYCODE_N, IP_JOY_NONE )
  576.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 J", KEYCODE_J, IP_JOY_NONE )
  577.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 F", KEYCODE_F, IP_JOY_NONE )
  578.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 B", KEYCODE_B, IP_JOY_NONE )
  579.  
  580.     PORT_START      /* IN1 */
  581.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  582.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  583.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  584.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P1 Ron", KEYCODE_Z, IP_JOY_NONE )
  585.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Chi", KEYCODE_SPACE, IP_JOY_NONE )
  586.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 K", KEYCODE_K, IP_JOY_NONE )
  587.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 G", KEYCODE_G, IP_JOY_NONE )
  588.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 C", KEYCODE_C, IP_JOY_NONE )
  589.  
  590.     PORT_START      /* IN1 */
  591.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  592.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  593.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  594.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  595.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Pon", KEYCODE_LALT, IP_JOY_NONE )
  596.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 L", KEYCODE_L, IP_JOY_NONE )
  597.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 H", KEYCODE_H, IP_JOY_NONE )
  598.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 D", KEYCODE_D, IP_JOY_NONE )
  599.  
  600.     PORT_START      /* IN1 */
  601.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  602.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  603.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  604.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  605.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P1 Flip", KEYCODE_X, IP_JOY_NONE )
  606.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  607.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  608.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  609.  
  610.     PORT_START      /* IN2 */
  611.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  612.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  613.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
  614.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  615.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 M", KEYCODE_M, IP_JOY_NONE )
  616.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 I", KEYCODE_I, IP_JOY_NONE )
  617.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 E", KEYCODE_E, IP_JOY_NONE )
  618.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 A", KEYCODE_A, IP_JOY_NONE )
  619.  
  620.     PORT_START      /* IN2 */
  621.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  622.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  623.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  624.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  625.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 N", KEYCODE_N, IP_JOY_NONE )
  626.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 J", KEYCODE_J, IP_JOY_NONE )
  627.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 F", KEYCODE_F, IP_JOY_NONE )
  628.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 B", KEYCODE_B, IP_JOY_NONE )
  629.  
  630.     PORT_START      /* IN2 */
  631.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  632.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  633.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  634.     PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "P2 Ron", KEYCODE_Z, IP_JOY_NONE )
  635.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Chi", KEYCODE_SPACE, IP_JOY_NONE )
  636.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 K", KEYCODE_K, IP_JOY_NONE )
  637.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 G", KEYCODE_G, IP_JOY_NONE )
  638.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 C", KEYCODE_C, IP_JOY_NONE )
  639.  
  640.     PORT_START      /* IN2 */
  641.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  642.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  643.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  644.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  645.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Pon", KEYCODE_LALT, IP_JOY_NONE )
  646.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 L", KEYCODE_L, IP_JOY_NONE )
  647.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 H", KEYCODE_H, IP_JOY_NONE )
  648.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 D", KEYCODE_D, IP_JOY_NONE )
  649.  
  650.     PORT_START      /* IN2 */
  651.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  652.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  653.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  654.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  655.     PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "P2 Flip", KEYCODE_X, IP_JOY_NONE )
  656.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  657.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  658.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  659. INPUT_PORTS_END
  660.  
  661. INPUT_PORTS_START( pkladies )
  662.     PORT_START      /* DSW */
  663.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  664.     PORT_BITX(0x02, 0x02, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  665.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  666.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  667.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  668.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  669.  
  670.     PORT_START      /* IN0 */
  671.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode farther down */
  672.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  673.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  674.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  675.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  676.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  677.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  678.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  679.  
  680.     PORT_START      /* IN1 */
  681.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  682.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  683.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  684.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  685.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  686.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 Deal", KEYCODE_LCONTROL, IP_JOY_NONE )
  687.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P1 E", KEYCODE_E, IP_JOY_NONE )
  688.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 A", KEYCODE_A, IP_JOY_NONE )
  689.  
  690.     PORT_START      /* IN1 */
  691.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  692.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  693.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  694.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  695.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  696.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 Cancel", KEYCODE_LALT, IP_JOY_NONE )
  697.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  698.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 B", KEYCODE_B, IP_JOY_NONE )
  699.  
  700.     PORT_START      /* IN1 */
  701.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  702.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  703.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  704.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  705.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  706.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P1 Flip", KEYCODE_SPACE, IP_JOY_NONE )
  707.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  708.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 C", KEYCODE_C, IP_JOY_NONE )
  709.  
  710.     PORT_START      /* IN1 */
  711.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  712.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  713.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  714.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  715.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  716.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  717.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  718.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  719.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P1 D", KEYCODE_D, IP_JOY_NONE )
  720.  
  721.     PORT_START      /* IN1 */
  722.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  723.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  724.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  725.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  726.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  727.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  728.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  729.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  730.  
  731.     PORT_START      /* IN2 */
  732.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  733.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  734.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  735.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  736.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  737.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 Deal", KEYCODE_LCONTROL, IP_JOY_NONE )
  738.     PORT_BITX(0x40, IP_ACTIVE_LOW, 0, "P2 E", KEYCODE_E, IP_JOY_NONE )
  739.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 A", KEYCODE_A, IP_JOY_NONE )
  740.  
  741.     PORT_START      /* IN2 */
  742.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  743.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  744.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  745.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  746.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  747.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 Cancel", KEYCODE_LALT, IP_JOY_NONE )
  748.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  749.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 B", KEYCODE_B, IP_JOY_NONE )
  750.  
  751.     PORT_START      /* IN2 */
  752.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  753.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  754.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  755.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  756.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  757.     PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "P2 Flip", KEYCODE_SPACE, IP_JOY_NONE )
  758.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  759.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 C", KEYCODE_C, IP_JOY_NONE )
  760.  
  761.     PORT_START      /* IN2 */
  762.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  763.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  764.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  765.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  766.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  767.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  768.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  769.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  770.     PORT_BITX(0x80, IP_ACTIVE_LOW, 0, "P2 D", KEYCODE_D, IP_JOY_NONE )
  771.  
  772.     PORT_START      /* IN2 */
  773.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  774.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  775.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  776.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  777.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  778.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  779.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  780.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  781. INPUT_PORTS_END
  782.  
  783. INPUT_PORTS_START( pang )
  784.     PORT_START      /* DSW */
  785.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  786.     PORT_BITX(0x02, 0x02, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  787.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  788.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  789.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  790.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  791.  
  792.     PORT_START      /* IN0 */
  793.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  794.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  795.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  796.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
  797.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  798.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  799.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  800.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  801.  
  802.     PORT_START      /* IN1 */
  803.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  804.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  805.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
  806.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  807.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  808.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  809.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  810.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
  811.  
  812.     PORT_START      /* IN2 */
  813.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  814.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  815.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  816.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  817.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
  818.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
  819.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
  820.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
  821. INPUT_PORTS_END
  822.  
  823. INPUT_PORTS_START( qtono1 )
  824.     PORT_START      /* DSW */
  825.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  826.     PORT_BITX(0x02, 0x02, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  827.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  828.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  829.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  830.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  831.  
  832.     PORT_START      /* IN0 */
  833.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode farther down */
  834.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  835.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  836.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  837.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  838.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  839.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  840.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  841.  
  842.     PORT_START      /* IN1 */
  843.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  844.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  845.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  846.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  847.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 )
  848.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
  849.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
  850.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  851.  
  852.     PORT_START      /* IN2 */
  853.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  854.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  855.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
  856.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  857.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
  858.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  859.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  860.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  861. INPUT_PORTS_END
  862.  
  863. INPUT_PORTS_START( block )
  864.     PORT_START      /* DSW */
  865.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  866.     PORT_BITX(0x02, 0x02, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  867.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  868.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* USED - handled in port5_r */
  869.     PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
  870.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* data from EEPROM */
  871.  
  872.     PORT_START      /* IN0 */
  873.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  874.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  875.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  876.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
  877.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  878.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
  879.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  880.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  881.  
  882.     PORT_START      /* IN1 */
  883.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  884.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  885.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  886.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* dial direction */
  887.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  888.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  889.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  890.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  891.  
  892.     PORT_START      /* IN2 */
  893.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  894.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  895.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  896.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* dial direction */
  897.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  898.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  899.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  900.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  901.  
  902.     PORT_START      /* DIAL1 */
  903.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL, 50, 20, 0, 0)
  904.  
  905.     PORT_START      /* DIAL2 */
  906.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_PLAYER2, 50, 20, 0, 0)
  907. INPUT_PORTS_END
  908.  
  909.  
  910.  
  911. static struct GfxLayout charlayout =
  912. {
  913.     8,8,    /* 8*8 characters */
  914.     32768,    /* 32768 characters */
  915.     4,        /* 4 bits per pixel */
  916.     { 32768*16*8+4, 32768*16*8+0,4, 0 },
  917.     { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 },
  918.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
  919.     16*8    /* every char takes 16 consecutive bytes */
  920. };
  921.  
  922. static struct GfxLayout marukin_charlayout =
  923. {
  924.     8,8,    /* 8*8 characters */
  925.     65536,    /* 65536 characters */
  926.     4,        /* 4 bits per pixel */
  927.     { 3*4, 2*4, 1*4, 0*4 },
  928.     { 0, 1, 2, 3, 16+0, 16+1, 16+2, 16+3 },
  929.     { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
  930.     32*8    /* every char takes 32 consecutive bytes */
  931. };
  932.  
  933. static struct GfxLayout spritelayout =
  934. {
  935.     16,16,  /* 16*16 sprites */
  936.     2048,   /* 2048 sprites */
  937.     4,      /* 4 bits per pixel */
  938.     { 2048*64*8+4, 2048*64*8+0, 4, 0 },
  939.     { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
  940.             32*8+0, 32*8+1, 32*8+2, 32*8+3, 33*8+0, 33*8+1, 33*8+2, 33*8+3 },
  941.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
  942.             8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
  943.     64*8    /* every sprite takes 64 consecutive bytes */
  944. };
  945.  
  946. static struct GfxDecodeInfo mgakuen_gfxdecodeinfo[] =
  947. {
  948.     { REGION_GFX1, 0, &marukin_charlayout, 0,  64 }, /* colors 0-1023 */
  949.     { REGION_GFX2, 0, &spritelayout,       0,  16 }, /* colors 0- 255 */
  950.     { -1 } /* end of array */
  951. };
  952.  
  953. static struct GfxDecodeInfo marukin_gfxdecodeinfo[] =
  954. {
  955.     { REGION_GFX1, 0, &marukin_charlayout, 0, 128 }, /* colors 0-2047 */
  956.     { REGION_GFX2, 0, &spritelayout,       0,  16 }, /* colors 0- 255 */
  957.     { -1 } /* end of array */
  958. };
  959.  
  960. static struct GfxDecodeInfo gfxdecodeinfo[] =
  961. {
  962.     { REGION_GFX1, 0, &charlayout,     0, 128 }, /* colors 0-2047 */
  963.     { REGION_GFX2, 0, &spritelayout,   0,  16 }, /* colors 0- 255 */
  964.     { -1 } /* end of array */
  965. };
  966.  
  967.  
  968.  
  969. static struct YM2413interface ym2413_interface=
  970. {
  971.     1,    /* 1 chip */
  972.     8000000,    /* 8MHz ??? (hand tuned) */
  973.     { 50 },    /* Volume */
  974. };
  975.  
  976. static struct OKIM6295interface okim6295_interface =
  977. {
  978.     1,            /* 1 chip */
  979.     { 8000 },    /* 8000Hz ??? */
  980.     { REGION_SOUND1 },        /* memory region 2 */
  981.     { 50 }
  982. };
  983.  
  984.  
  985.  
  986. static struct MachineDriver machine_driver_mgakuen =
  987. {
  988.     {
  989.         {
  990.             CPU_Z80,
  991.             6000000,    /* ??? */
  992.             mgakuen_readmem,mgakuen_writemem,readport,writeport,
  993.             interrupt,2    /* ??? one extra irq seems to be needed for music (see input5_r) */
  994.         },
  995.     },
  996.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  997.     1,
  998.     0,
  999.  
  1000.     64*8, 32*8, { 8*8, (64-8)*8-1, 1*8, 31*8-1 },
  1001.     mgakuen_gfxdecodeinfo,
  1002.     1024, 1024,    /* less colors than the others */
  1003.     0,
  1004.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1005.     0,
  1006.     pang_vh_start,
  1007.     pang_vh_stop,
  1008.     pang_vh_screenrefresh,
  1009.     0,0,0,0,
  1010.     {
  1011.         {
  1012.             SOUND_OKIM6295,
  1013.             &okim6295_interface
  1014.         },
  1015.         {
  1016.             SOUND_YM2413,
  1017.             &ym2413_interface
  1018.         },
  1019.     }
  1020.  
  1021.     /* no EEPROM */
  1022. };
  1023.  
  1024. static struct MachineDriver machine_driver_pang =
  1025. {
  1026.     {
  1027.         {
  1028.             CPU_Z80,
  1029.             8000000,    /* Super Pang says 8MHZ ORIGINAL BOARD */
  1030.             readmem,writemem,readport,writeport,
  1031.             interrupt,2    /* ??? one extra irq seems to be needed for music (see input5_r) */
  1032.         },
  1033.     },
  1034.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1035.     1,
  1036.     0,
  1037.  
  1038.     64*8, 32*8, { 8*8, (64-8)*8-1, 1*8, 31*8-1 },
  1039.     gfxdecodeinfo,
  1040.     2048, 2048,
  1041.     0,
  1042.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1043.     0,
  1044.     pang_vh_start,
  1045.     pang_vh_stop,
  1046.     pang_vh_screenrefresh,
  1047.     0,0,0,0,
  1048.     {
  1049.         {
  1050.             SOUND_OKIM6295,
  1051.             &okim6295_interface
  1052.         },
  1053.         {
  1054.             SOUND_YM2413,
  1055.             &ym2413_interface
  1056.         },
  1057.     },
  1058.  
  1059.     nvram_handler
  1060. };
  1061.  
  1062. static struct MachineDriver machine_driver_marukin =
  1063. {
  1064.     {
  1065.         {
  1066.             CPU_Z80,
  1067.             8000000,    /* Super Pang says 8MHZ ORIGINAL BOARD */
  1068.             readmem,writemem,readport,writeport,
  1069.             interrupt,2    /* ??? one extra irq seems to be needed for music (see input5_r) */
  1070.         },
  1071.     },
  1072.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1073.     1,
  1074.     0,
  1075.  
  1076.     64*8, 32*8, { 8*8, (64-8)*8-1, 1*8, 31*8-1 },
  1077.     marukin_gfxdecodeinfo,
  1078.     2048, 2048,
  1079.     0,
  1080.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1081.     0,
  1082.     pang_vh_start,
  1083.     pang_vh_stop,
  1084.     pang_vh_screenrefresh,
  1085.     0,0,0,0,
  1086.     {
  1087.         {
  1088.             SOUND_OKIM6295,
  1089.             &okim6295_interface
  1090.         },
  1091.         {
  1092.             SOUND_YM2413,
  1093.             &ym2413_interface
  1094.         },
  1095.     },
  1096.  
  1097.     nvram_handler
  1098. };
  1099.  
  1100.  
  1101.  
  1102. ROM_START( mgakuen )
  1103.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 192k for code */
  1104.     ROM_LOAD( "mg-1.1j",      0x00000, 0x08000, 0xbf02ea6b )
  1105.     ROM_LOAD( "mg-2.1l",      0x10000, 0x20000, 0x64141b0c )
  1106.  
  1107.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1108.     ROM_LOAD( "mg-1.13h",     0x000000, 0x80000, 0xfd6a0805 )    /* chars */
  1109.     ROM_LOAD( "mg-2.14h",     0x080000, 0x80000, 0xe26e871e )
  1110.     ROM_LOAD( "mg-3.16h",     0x100000, 0x80000, 0xdd781d9a )
  1111.     ROM_LOAD( "mg-4.17h",     0x180000, 0x80000, 0x97afcc79 )
  1112.  
  1113.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1114.     ROM_LOAD( "mg-6.4l",      0x000000, 0x20000, 0x34594e62 )    /* sprites */
  1115.     ROM_LOAD( "mg-7.6l",      0x020000, 0x20000, 0xf304c806 )
  1116.  
  1117.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1118.     ROM_LOAD( "mg-5.1c",      0x00000, 0x80000, 0x170332f1 )    /* banked */
  1119. ROM_END
  1120.  
  1121. ROM_START( mgakuen2 )
  1122.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1123.     ROM_LOAD( "mg2-xf.1j",    0x00000, 0x08000, 0xc8165d2d )
  1124.     ROM_LOAD( "mg2-y.1l",     0x10000, 0x20000, 0x75bbcc14 )
  1125.     ROM_LOAD( "mg2-z.3l",     0x30000, 0x20000, 0xbfdba961 )
  1126.  
  1127.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1128.     ROM_LOAD( "mg2-a.13h",    0x000000, 0x80000, 0x31a0c55e )    /* chars */
  1129.     ROM_LOAD( "mg2-b.14h",    0x080000, 0x80000, 0xc18488fa )
  1130.     ROM_LOAD( "mg2-c.16h",    0x100000, 0x80000, 0x9425b364 )
  1131.     ROM_LOAD( "mg2-d.17h",    0x180000, 0x80000, 0x6cc9eeba )
  1132.  
  1133.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1134.     ROM_LOAD( "mg2-f.4l",     0x000000, 0x20000, 0x3172c9fe )    /* sprites */
  1135.     ROM_LOAD( "mg2-g.6l",     0x020000, 0x20000, 0x19b8b61c )
  1136.  
  1137.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1138.     ROM_LOAD( "mg2-e.1c",     0x00000, 0x80000, 0x70fd0809 )    /* banked */
  1139. ROM_END
  1140.  
  1141. ROM_START( pkladies )
  1142.     ROM_REGION( 2*0x20000, REGION_CPU1 )    /* 128k for code + 128k for decrypted opcodes */
  1143.     ROM_LOAD( "pko-prg1.14f", 0x00000, 0x08000, 0x86585a94 )
  1144.     ROM_LOAD( "pko-prg2.15f", 0x10000, 0x10000, 0x86cbe82d )
  1145.  
  1146.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1147.     ROM_LOAD_GFX_EVEN( "pko-001.8h",   0x000000, 0x80000, 0x1ead5d9b )    /* chars */
  1148.     ROM_LOAD_GFX_ODD ( "pko-003.8j",   0x000000, 0x80000, 0x339ab4e6 )
  1149.     ROM_LOAD_GFX_EVEN( "pko-002.9h",   0x100000, 0x80000, 0x1cf02586 )
  1150.     ROM_LOAD_GFX_ODD ( "pko-004.9j",   0x100000, 0x80000, 0x09ccb442 )
  1151.  
  1152.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1153.     ROM_LOAD( "pko-chr1.2j",  0x000000, 0x20000, 0x31ce33cd )    /* sprites */
  1154.     ROM_LOAD( "pko-chr2.3j",  0x020000, 0x20000, 0xad7e055f )
  1155.  
  1156.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1157.     ROM_LOAD( "pko-voi1.2d",  0x00000, 0x20000, 0x07e0f531 )
  1158.     ROM_LOAD( "pko-voi2.3d",  0x20000, 0x20000, 0x18398bf6 )
  1159. ROM_END
  1160.  
  1161. ROM_START( dokaben )
  1162.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1163.     ROM_LOAD( "db06.11h",     0x00000, 0x08000, 0x413e0886 )
  1164.     ROM_LOAD( "db07.13h",     0x10000, 0x20000, 0x8bdcf49e )
  1165.     ROM_LOAD( "db08.14h",     0x30000, 0x20000, 0x1643bdd9 )
  1166.  
  1167.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1168.     ROM_LOAD( "db02.1e",      0x000000, 0x20000, 0x9aa8470c )    /* chars */
  1169.     ROM_LOAD( "db03.2e",      0x020000, 0x20000, 0x3324e43d )
  1170.     /* 40000-7ffff empty */
  1171.     ROM_LOAD( "db04.1g",      0x080000, 0x20000, 0xc0c5b6c2 )
  1172.     ROM_LOAD( "db05.2g",      0x0a0000, 0x20000, 0xd2ab25f2 )
  1173.     /* c0000-fffff empty */
  1174.  
  1175.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1176.     ROM_LOAD( "db10.2k",      0x000000, 0x20000, 0x9e70f7ae )    /* sprites */
  1177.     ROM_LOAD( "db09.1k",      0x020000, 0x20000, 0x2d9263f7 )
  1178.  
  1179.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1180.     ROM_LOAD( "db01.1d",      0x00000, 0x20000, 0x62fa6b81 )
  1181. ROM_END
  1182.  
  1183. ROM_START( pang )
  1184.     ROM_REGION( 2*0x30000, REGION_CPU1 )    /* 192k for code + 192k for decrypted opcodes */
  1185.     ROM_LOAD( "pang6.bin",    0x00000, 0x08000, 0x68be52cd )
  1186.     ROM_LOAD( "pang7.bin",    0x10000, 0x20000, 0x4a2e70f6 )
  1187.  
  1188.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1189.     ROM_LOAD( "pang_09.bin",  0x000000, 0x20000, 0x3a5883f5 )    /* chars */
  1190.     ROM_LOAD( "bb3.bin",      0x020000, 0x20000, 0x79a8ed08 )
  1191.     /* 40000-7ffff empty */
  1192.     ROM_LOAD( "pang_11.bin",  0x080000, 0x20000, 0x166a16ae )
  1193.     ROM_LOAD( "bb5.bin",      0x0a0000, 0x20000, 0x2fb3db6c )
  1194.     /* c0000-fffff empty */
  1195.  
  1196.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1197.     ROM_LOAD( "bb10.bin",     0x000000, 0x20000, 0xfdba4f6e )    /* sprites */
  1198.     ROM_LOAD( "bb9.bin",      0x020000, 0x20000, 0x39f47a63 )
  1199.  
  1200.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1201.     ROM_LOAD( "bb1.bin",      0x00000, 0x20000, 0xc52e5b8e )
  1202. ROM_END
  1203.  
  1204. ROM_START( pangb )
  1205.     ROM_REGION( 2*0x30000, REGION_CPU1 )    /* 192k for code + 192k for decrypted opcodes */
  1206.     ROM_LOAD( "pang_04.bin",  0x30000, 0x08000, 0xf68f88a5 )   /* Decrypted opcode + data */
  1207.     ROM_CONTINUE(             0x00000, 0x08000 )
  1208.     ROM_LOAD( "pang_02.bin",  0x40000, 0x20000, 0x3f15bb61 )   /* Decrypted op codes */
  1209.     ROM_LOAD( "pang_03.bin",  0x10000, 0x20000, 0x0c8477ae )   /* Decrypted data */
  1210.  
  1211.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1212.     ROM_LOAD( "pang_09.bin",  0x000000, 0x20000, 0x3a5883f5 )    /* chars */
  1213.     ROM_LOAD( "bb3.bin",      0x020000, 0x20000, 0x79a8ed08 )
  1214.     /* 40000-7ffff empty */
  1215.     ROM_LOAD( "pang_11.bin",  0x080000, 0x20000, 0x166a16ae )
  1216.     ROM_LOAD( "bb5.bin",      0x0a0000, 0x20000, 0x2fb3db6c )
  1217.     /* c0000-fffff empty */
  1218.  
  1219.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1220.     ROM_LOAD( "bb10.bin",     0x000000, 0x20000, 0xfdba4f6e )    /* sprites */
  1221.     ROM_LOAD( "bb9.bin",      0x020000, 0x20000, 0x39f47a63 )
  1222.  
  1223.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1224.     ROM_LOAD( "bb1.bin",      0x00000, 0x20000, 0xc52e5b8e )
  1225. ROM_END
  1226.  
  1227. ROM_START( bbros )
  1228.     ROM_REGION( 2*0x30000, REGION_CPU1 )    /* 192k for code + 192k for decrypted opcodes */
  1229.     ROM_LOAD( "bb6.bin",      0x00000, 0x08000, 0xa3041ca4 )
  1230.     ROM_LOAD( "bb7.bin",      0x10000, 0x20000, 0x09231c68 )
  1231.  
  1232.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1233.     ROM_LOAD( "bb2.bin",      0x000000, 0x20000, 0x62f29992 )    /* chars */
  1234.     ROM_LOAD( "bb3.bin",      0x020000, 0x20000, 0x79a8ed08 )
  1235.     /* 40000-7ffff empty */
  1236.     ROM_LOAD( "bb4.bin",      0x080000, 0x20000, 0xf705aa89 )
  1237.     ROM_LOAD( "bb5.bin",      0x0a0000, 0x20000, 0x2fb3db6c )
  1238.     /* c0000-fffff empty */
  1239.  
  1240.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1241.     ROM_LOAD( "bb10.bin",     0x000000, 0x20000, 0xfdba4f6e )    /* sprites */
  1242.     ROM_LOAD( "bb9.bin",      0x020000, 0x20000, 0x39f47a63 )
  1243.  
  1244.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1245.     ROM_LOAD( "bb1.bin",      0x00000, 0x20000, 0xc52e5b8e )
  1246. ROM_END
  1247.  
  1248. ROM_START( pompingw )
  1249.     ROM_REGION( 2*0x30000, REGION_CPU1 )    /* 192k for code + 192k for decrypted opcodes */
  1250.     ROM_LOAD( "pwj_06.11h",   0x00000, 0x08000, 0x4a0a6426 )
  1251.     ROM_LOAD( "pwj_07.13h",   0x10000, 0x20000, 0xa9402420 )
  1252.  
  1253.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1254.     ROM_LOAD( "pw_02.1e",     0x000000, 0x20000, 0x4b5992e4 )    /* chars */
  1255.     ROM_LOAD( "bb3.bin",      0x020000, 0x20000, 0x79a8ed08 )
  1256.     /* 40000-7ffff empty */
  1257.     ROM_LOAD( "pwj_04.1g",    0x080000, 0x20000, 0x01e49081 )
  1258.     ROM_LOAD( "bb5.bin",      0x0a0000, 0x20000, 0x2fb3db6c )
  1259.     /* c0000-fffff empty */
  1260.  
  1261.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1262.     ROM_LOAD( "bb10.bin",     0x000000, 0x20000, 0xfdba4f6e )    /* sprites */
  1263.     ROM_LOAD( "bb9.bin",      0x020000, 0x20000, 0x39f47a63 )
  1264.  
  1265.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1266.     ROM_LOAD( "bb1.bin",      0x00000, 0x20000, 0xc52e5b8e )
  1267. ROM_END
  1268.  
  1269. ROM_START( cworld )
  1270.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1271.     ROM_LOAD( "cw05.bin",     0x00000, 0x08000, 0xd3c1723d )
  1272.     ROM_LOAD( "cw06.bin",     0x10000, 0x20000, 0xd71ed4a3 )
  1273.     ROM_LOAD( "cw07.bin",     0x30000, 0x20000, 0xd419ce08 )
  1274.  
  1275.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1276.     ROM_LOAD( "cw08.bin",     0x000000, 0x20000, 0x6c80da3c )    /* chars */
  1277.     ROM_LOAD( "cw09.bin",     0x020000, 0x20000, 0x7607da71 )
  1278.     ROM_LOAD( "cw10.bin",     0x040000, 0x20000, 0x6f0e639f )
  1279.     ROM_LOAD( "cw11.bin",     0x060000, 0x20000, 0x130bd7c0 )
  1280.     ROM_LOAD( "cw18.bin",     0x080000, 0x20000, 0xbe6ee0c9 )
  1281.     ROM_LOAD( "cw19.bin",     0x0a0000, 0x20000, 0x51fc5532 )
  1282.     ROM_LOAD( "cw20.bin",     0x0c0000, 0x20000, 0x58381d58 )
  1283.     ROM_LOAD( "cw21.bin",     0x0e0000, 0x20000, 0x910cc753 )
  1284.  
  1285.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1286.     ROM_LOAD( "cw16.bin",     0x000000, 0x20000, 0xf90217d1 )    /* sprites */
  1287.     ROM_LOAD( "cw17.bin",     0x020000, 0x20000, 0xc953c702 )
  1288.  
  1289.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1290.     ROM_LOAD( "cw01.bin",     0x00000, 0x20000, 0xf4368f5b )
  1291. ROM_END
  1292.  
  1293. ROM_START( hatena )
  1294.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1295.     ROM_LOAD( "q2-05.rom",    0x00000, 0x08000, 0x66c9e1da )
  1296.     ROM_LOAD( "q2-06.rom",    0x10000, 0x20000, 0x5fc39916 )
  1297.     ROM_LOAD( "q2-07.rom",    0x30000, 0x20000, 0xec6d5e5e )
  1298.  
  1299.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1300.     ROM_LOAD( "q2-08.rom",    0x000000, 0x20000, 0x6c80da3c )    /* chars */
  1301.     ROM_LOAD( "q2-09.rom",    0x020000, 0x20000, 0xabe3e15c )
  1302.     ROM_LOAD( "q2-10.rom",    0x040000, 0x20000, 0x6963450d )
  1303.     ROM_LOAD( "q2-11.rom",    0x060000, 0x20000, 0x1e319fa2 )
  1304.     ROM_LOAD( "q2-18.rom",    0x080000, 0x20000, 0xbe6ee0c9 )
  1305.     ROM_LOAD( "q2-19.rom",    0x0a0000, 0x20000, 0x70300445 )
  1306.     ROM_LOAD( "q2-20.rom",    0x0c0000, 0x20000, 0x21a6ff42 )
  1307.     ROM_LOAD( "q2-21.rom",    0x0e0000, 0x20000, 0x076280c9 )
  1308.  
  1309.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1310.     ROM_LOAD( "q2-16.rom",    0x000000, 0x20000, 0xec19b2f0 )    /* sprites */
  1311.     ROM_LOAD( "q2-17.rom",    0x020000, 0x20000, 0xecd69d92 )
  1312.  
  1313.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1314.     ROM_LOAD( "q2-01.rom",    0x00000, 0x20000, 0x149e7a89 )
  1315. ROM_END
  1316.  
  1317. ROM_START( spang )
  1318.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1319.     ROM_LOAD( "spe_06.rom",   0x00000, 0x08000, 0x1af106fb )
  1320.     ROM_LOAD( "spe_07.rom",   0x10000, 0x20000, 0x208b5f54 )
  1321.     ROM_LOAD( "spe_08.rom",   0x30000, 0x20000, 0x2bc03ade )
  1322.  
  1323.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1324.     ROM_LOAD( "spe_02.rom",   0x000000, 0x20000, 0x63c9dfd2 )    /* chars */
  1325.     ROM_LOAD( "03.f2",        0x020000, 0x20000, 0x3ae28bc1 )
  1326.     /* 40000-7ffff empty */
  1327.     ROM_LOAD( "spe_04.rom",   0x080000, 0x20000, 0x9d7b225b )
  1328.     ROM_LOAD( "05.g2",        0x0a0000, 0x20000, 0x4a060884 )
  1329.     /* c0000-fffff empty */
  1330.  
  1331.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1332.     ROM_LOAD( "spe_10.rom",   0x000000, 0x20000, 0xeedd0ade )    /* sprites */
  1333.     ROM_LOAD( "spe_09.rom",   0x020000, 0x20000, 0x04b41b75 )
  1334.  
  1335.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1336.     ROM_LOAD( "spe_01.rom",   0x00000, 0x20000, 0x2d19c133 )
  1337. ROM_END
  1338.  
  1339. ROM_START( sbbros )
  1340.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1341.     ROM_LOAD( "06.j12",       0x00000, 0x08000, 0x292eee6a )
  1342.     ROM_LOAD( "07.j13",       0x10000, 0x20000, 0xf46b698d )
  1343.     ROM_LOAD( "08.j14",       0x30000, 0x20000, 0xa75e7fbe )
  1344.  
  1345.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1346.     ROM_LOAD( "02.f1",        0x000000, 0x20000, 0x0c22ffc6 )    /* chars */
  1347.     ROM_LOAD( "03.f2",        0x020000, 0x20000, 0x3ae28bc1 )
  1348.     /* 40000-7ffff empty */
  1349.     ROM_LOAD( "04.g2",        0x080000, 0x20000, 0xbb3dee5b )
  1350.     ROM_LOAD( "05.g2",        0x0a0000, 0x20000, 0x4a060884 )
  1351.     /* c0000-fffff empty */
  1352.  
  1353.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1354.     ROM_LOAD( "10.l2",        0x000000, 0x20000, 0xd6675d8f )    /* sprites */
  1355.     ROM_LOAD( "09.l1",        0x020000, 0x20000, 0x8f678bc8 )
  1356.  
  1357.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1358.     ROM_LOAD( "01.d1",        0x00000, 0x20000, 0xb96ea126 )
  1359. ROM_END
  1360.  
  1361. ROM_START( marukin )
  1362.     ROM_REGION( 2*0x30000, REGION_CPU1 )    /* 192k for code + 192k for decrypted opcodes */
  1363.     ROM_LOAD( "mg3-01.9d",    0x00000, 0x08000, 0x04357973 )
  1364.     ROM_LOAD( "mg3-02.10d",   0x10000, 0x20000, 0x50d08da0 )
  1365.  
  1366.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1367.     ROM_LOAD( "mg3-a.3k",     0x000000, 0x80000, 0x420f1de7 )    /* chars */
  1368.     ROM_LOAD( "mg3-b.4k",     0x080000, 0x80000, 0xd8de13fa )
  1369.     ROM_LOAD( "mg3-c.6k",     0x100000, 0x80000, 0xfbeb66e8 )
  1370.     ROM_LOAD( "mg3-d.7k",     0x180000, 0x80000, 0x8f6bd831 )
  1371.  
  1372.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1373.     ROM_LOAD( "mg3-05.2g",    0x000000, 0x20000, 0x7a738d2d )    /* sprites */
  1374.     ROM_LOAD( "mg3-04.1g",    0x020000, 0x20000, 0x56f30515 )
  1375.  
  1376.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1377.     ROM_LOAD( "mg3-e.1d",     0x00000, 0x80000, 0x106c2fa9 )    /* banked */
  1378. ROM_END
  1379.  
  1380. ROM_START( qtono1 )
  1381.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1382.     ROM_LOAD( "q3-05.rom",    0x00000, 0x08000, 0x1dd0a344 )
  1383.     ROM_LOAD( "q3-06.rom",    0x10000, 0x20000, 0xbd6a2110 )
  1384.     ROM_LOAD( "q3-07.rom",    0x30000, 0x20000, 0x61e53c4f )
  1385.  
  1386.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1387.     ROM_LOAD( "q3-08.rom",    0x000000, 0x20000, 0x1533b978 )    /* chars */
  1388.     ROM_LOAD( "q3-09.rom",    0x020000, 0x20000, 0xa32db2f2 )
  1389.     ROM_LOAD( "q3-10.rom",    0x040000, 0x20000, 0xed681aa8 )
  1390.     ROM_LOAD( "q3-11.rom",    0x060000, 0x20000, 0x38b2fd10 )
  1391.     ROM_LOAD( "q3-18.rom",    0x080000, 0x20000, 0x9e4292ac )
  1392.     ROM_LOAD( "q3-19.rom",    0x0a0000, 0x20000, 0xb7f6d40f )
  1393.     ROM_LOAD( "q3-20.rom",    0x0c0000, 0x20000, 0x6cd7f38d )
  1394.     ROM_LOAD( "q3-21.rom",    0x0e0000, 0x20000, 0xb4aa6b4b )
  1395.  
  1396.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1397.     ROM_LOAD( "q3-16.rom",    0x000000, 0x20000, 0x863d6836 )    /* sprites */
  1398.     ROM_LOAD( "q3-17.rom",    0x020000, 0x20000, 0x459bf59c )
  1399.  
  1400.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1401.     ROM_LOAD( "q3-01.rom",    0x00000, 0x20000, 0x6c1be591 )
  1402. ROM_END
  1403.  
  1404. ROM_START( qsangoku )
  1405.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1406.     ROM_LOAD( "q4-05c.rom",   0x00000, 0x08000, 0xe1d010b4 )
  1407.     ROM_LOAD( "q4-06.rom",    0x10000, 0x20000, 0xa0301849 )
  1408.     ROM_LOAD( "q4-07.rom",    0x30000, 0x20000, 0x2941ef5b )
  1409.  
  1410.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1411.     ROM_LOAD( "q4-08.rom",    0x000000, 0x20000, 0xdc84c6cb )    /* chars */
  1412.     ROM_LOAD( "q4-09.rom",    0x020000, 0x20000, 0xcbb6234c )
  1413.     ROM_LOAD( "q4-10.rom",    0x040000, 0x20000, 0xc20a27a8 )
  1414.     ROM_LOAD( "q4-11.rom",    0x060000, 0x20000, 0x4ff66aed )
  1415.     ROM_LOAD( "q4-18.rom",    0x080000, 0x20000, 0xca3acea5 )
  1416.     ROM_LOAD( "q4-19.rom",    0x0a0000, 0x20000, 0x1fd92b7d )
  1417.     ROM_LOAD( "q4-20.rom",    0x0c0000, 0x20000, 0xb02dc6a1 )
  1418.     ROM_LOAD( "q4-21.rom",    0x0e0000, 0x20000, 0x432b1dc1 )
  1419.  
  1420.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1421.     ROM_LOAD( "q4-16.rom",    0x000000, 0x20000, 0x77342320 )    /* sprites */
  1422.     ROM_LOAD( "q4-17.rom",    0x020000, 0x20000, 0x1275c436 )
  1423.  
  1424.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1425.     ROM_LOAD( "q4-01.rom",    0x00000, 0x20000, 0x5d0d07d8 )
  1426. ROM_END
  1427.  
  1428. ROM_START( block )
  1429.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1430.     ROM_LOAD( "ble_05.rom",   0x00000, 0x08000, 0xc12e7f4c )
  1431.     ROM_LOAD( "ble_06.rom",   0x10000, 0x20000, 0xcdb13d55 )
  1432.     ROM_LOAD( "ble_07.rom",   0x30000, 0x20000, 0x1d114f13 )
  1433.  
  1434.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1435.     ROM_LOAD( "bl_08.rom",    0x000000, 0x20000, 0xaa0f4ff1 )    /* chars */
  1436.     ROM_RELOAD(               0x040000, 0x20000 )
  1437.     ROM_LOAD( "bl_09.rom",    0x020000, 0x20000, 0x6fa8c186 )
  1438.     ROM_RELOAD(               0x060000, 0x20000 )
  1439.     ROM_LOAD( "bl_18.rom",    0x080000, 0x20000, 0xc0acafaf )
  1440.     ROM_RELOAD(               0x0c0000, 0x20000 )
  1441.     ROM_LOAD( "bl_19.rom",    0x0a0000, 0x20000, 0x1ae942f5 )
  1442.     ROM_RELOAD(               0x0e0000, 0x20000 )
  1443.  
  1444.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1445.     ROM_LOAD( "bl_16.rom",    0x000000, 0x20000, 0xfadcaff7 )    /* sprites */
  1446.     ROM_LOAD( "bl_17.rom",    0x020000, 0x20000, 0x5f8cab42 )
  1447.  
  1448.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1449.     ROM_LOAD( "bl_01.rom",    0x00000, 0x20000, 0xc2ec2abb )
  1450. ROM_END
  1451.  
  1452. ROM_START( blockj )
  1453.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1454.     ROM_LOAD( "blj_05.rom",   0x00000, 0x08000, 0x3b55969a )
  1455.     ROM_LOAD( "ble_06.rom",   0x10000, 0x20000, 0xcdb13d55 )
  1456.     ROM_LOAD( "blj_07.rom",   0x30000, 0x20000, 0x1723883c )
  1457.  
  1458.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1459.     ROM_LOAD( "bl_08.rom",    0x000000, 0x20000, 0xaa0f4ff1 )    /* chars */
  1460.     ROM_RELOAD(               0x040000, 0x20000 )
  1461.     ROM_LOAD( "bl_09.rom",    0x020000, 0x20000, 0x6fa8c186 )
  1462.     ROM_RELOAD(               0x060000, 0x20000 )
  1463.     ROM_LOAD( "bl_18.rom",    0x080000, 0x20000, 0xc0acafaf )
  1464.     ROM_RELOAD(               0x0c0000, 0x20000 )
  1465.     ROM_LOAD( "bl_19.rom",    0x0a0000, 0x20000, 0x1ae942f5 )
  1466.     ROM_RELOAD(               0x0e0000, 0x20000 )
  1467.  
  1468.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1469.     ROM_LOAD( "bl_16.rom",    0x000000, 0x20000, 0xfadcaff7 )    /* sprites */
  1470.     ROM_LOAD( "bl_17.rom",    0x020000, 0x20000, 0x5f8cab42 )
  1471.  
  1472.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1473.     ROM_LOAD( "bl_01.rom",    0x00000, 0x20000, 0xc2ec2abb )
  1474. ROM_END
  1475.  
  1476. ROM_START( blockbl )
  1477.     ROM_REGION( 2*0x50000, REGION_CPU1 )    /* 320k for code + 320k for decrypted opcodes */
  1478.     ROM_LOAD( "m7.l6",        0x50000, 0x08000, 0x3b576fd9 )   /* Decrypted opcode + data */
  1479.     ROM_CONTINUE(             0x00000, 0x08000 )
  1480.     ROM_LOAD( "m5.l3",        0x60000, 0x20000, 0x7c988bb7 )   /* Decrypted opcode + data */
  1481.     ROM_CONTINUE(             0x10000, 0x20000 )
  1482.     ROM_LOAD( "m6.l5",        0x30000, 0x20000, 0x5768d8eb )   /* Decrypted data */
  1483.  
  1484.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1485.     ROM_LOAD( "m12.o10",      0x000000, 0x20000, 0x963154d9 )    /* chars */
  1486.     ROM_RELOAD(               0x040000, 0x20000 )
  1487.     ROM_LOAD( "m13.o14",      0x020000, 0x20000, 0x069480bb )
  1488.     ROM_RELOAD(               0x060000, 0x20000 )
  1489.     ROM_LOAD( "m4.j17",       0x080000, 0x20000, 0x9e3b6f4f )
  1490.     ROM_RELOAD(               0x0c0000, 0x20000 )
  1491.     ROM_LOAD( "m3.j20",       0x0a0000, 0x20000, 0x629d58fe )
  1492.     ROM_RELOAD(               0x0e0000, 0x20000 )
  1493.  
  1494.     ROM_REGION( 0x040000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1495.     ROM_LOAD( "m11.o7",       0x000000, 0x10000, 0x255180a5 )    /* sprites */
  1496.     ROM_LOAD( "m10.o5",       0x010000, 0x10000, 0x3201c088 )
  1497.     ROM_LOAD( "m9.o3",        0x020000, 0x10000, 0x29357fe4 )
  1498.     ROM_LOAD( "m8.o2",        0x030000, 0x10000, 0xabd665d1 )
  1499.  
  1500.     ROM_REGION( 0x80000, REGION_SOUND1 )    /* OKIM */
  1501.     ROM_LOAD( "bl_01.rom",    0x00000, 0x20000, 0xc2ec2abb )
  1502. ROM_END
  1503.  
  1504.  
  1505. static void bootleg_decode(void)
  1506. {
  1507.     unsigned char *rom = memory_region(REGION_CPU1);
  1508.     int diff = memory_region_length(REGION_CPU1) / 2;
  1509.  
  1510.     memory_set_opcode_base(0,rom+diff);
  1511. }
  1512.  
  1513.  
  1514.  
  1515. static void init_dokaben(void)
  1516. {
  1517.     input_type = 0;
  1518.     nvram_size = 0;
  1519.     mgakuen2_decode();
  1520. }
  1521. static void init_pang(void)
  1522. {
  1523.     input_type = 0;
  1524.     nvram_size = 0;
  1525.     pang_decode();
  1526. }
  1527. static void init_pangb(void)
  1528. {
  1529.     input_type = 0;
  1530.     nvram_size = 0;
  1531.     bootleg_decode();
  1532. }
  1533. static void init_cworld(void)
  1534. {
  1535.     input_type = 0;
  1536.     nvram_size = 0;
  1537.     cworld_decode();
  1538. }
  1539. static void init_hatena(void)
  1540. {
  1541.     input_type = 0;
  1542.     nvram_size = 0;
  1543.     hatena_decode();
  1544. }
  1545. static void init_spang(void)
  1546. {
  1547.     input_type = 3;
  1548.     nvram_size = 0x80;
  1549.     nvram = &memory_region(REGION_CPU1)[0xe000];    /* NVRAM */
  1550.     spang_decode();
  1551. }
  1552. static void init_sbbros(void)
  1553. {
  1554.     input_type = 3;
  1555.     nvram_size = 0x80;
  1556.     nvram = &memory_region(REGION_CPU1)[0xe000];    /* NVRAM */
  1557.     sbbros_decode();
  1558. }
  1559. static void init_qtono1(void)
  1560. {
  1561.     input_type = 0;
  1562.     nvram_size = 0;
  1563.     qtono1_decode();
  1564. }
  1565. static void init_qsangoku(void)
  1566. {
  1567.     input_type = 0;
  1568.     nvram_size = 0;
  1569.     qsangoku_decode();
  1570. }
  1571. static void init_mgakuen(void)
  1572. {
  1573.     input_type = 1;
  1574. }
  1575. static void init_mgakuen2(void)
  1576. {
  1577.     input_type = 1;
  1578.     nvram_size = 0;
  1579.     mgakuen2_decode();
  1580. }
  1581. static void init_marukin(void)
  1582. {
  1583.     input_type = 1;
  1584.     nvram_size = 0;
  1585.     marukin_decode();
  1586. }
  1587. static void init_block(void)
  1588. {
  1589.     input_type = 2;
  1590.     nvram_size = 0x80;
  1591.     nvram = &memory_region(REGION_CPU1)[0xff80];    /* NVRAM */
  1592.     block_decode();
  1593. }
  1594. static void init_blockbl(void)
  1595. {
  1596.     input_type = 2;
  1597.     nvram_size = 0x80;
  1598.     nvram = &memory_region(REGION_CPU1)[0xff80];    /* NVRAM */
  1599.     bootleg_decode();
  1600. }
  1601.  
  1602.  
  1603.  
  1604. GAME( 1988, mgakuen,  0,     mgakuen, mgakuen,  mgakuen,  ROT0,   "Yuga", "Mahjong Gakuen" )
  1605. GAME( 1989, mgakuen2, 0,     marukin, marukin,  mgakuen2, ROT0,   "Face", "Mahjong Gakuen 2 Gakuen-chou no Fukushuu" )
  1606. GAME( 1989, pkladies, 0,     marukin, pkladies, mgakuen2, ROT0,   "Mitchell", "Poker Ladies" )
  1607. GAME( 1989, dokaben,  0,     pang,    pang,     dokaben,  ROT0,   "Capcom", "Dokaben (Japan)" )
  1608. GAME( 1989, pang,     0,     pang,    pang,     pang,     ROT0,   "Mitchell", "Pang (World)" )
  1609. GAME( 1989, pangb,    pang,  pang,    pang,     pangb,    ROT0,   "bootleg", "Pang (bootleg)" )
  1610. GAME( 1989, bbros,    pang,  pang,    pang,     pang,     ROT0,   "Capcom", "Buster Bros (US)" )
  1611. GAME( 1989, pompingw, pang,  pang,    pang,     pang,     ROT0,   "Mitchell", "Pomping World (Japan)" )
  1612. GAME( 1989, cworld,   0,     pang,    qtono1,   cworld,   ROT0,   "Capcom", "Capcom World (Japan)" )
  1613. GAME( 1990, hatena,   0,     pang,    qtono1,   hatena,   ROT0,   "Capcom", "Adventure Quiz 2 Hatena Hatena no Dai-Bouken (Japan)" )
  1614. GAME( 1990, spang,    0,     pang,    pang,     spang,    ROT0,   "Mitchell", "Super Pang (World)" )
  1615. GAME( 1990, sbbros,   spang, pang,    pang,     sbbros,   ROT0,   "Mitchell + Capcom", "Super Buster Bros (US)" )
  1616. GAME( 1990, marukin,  0,     marukin, marukin,  marukin,  ROT0,   "Yuga", "Super Marukin-Ban" )
  1617. GAME( 1991, qtono1,   0,     pang,    qtono1,   qtono1,   ROT0,   "Capcom", "Quiz Tonosama no Yabou (Japan)" )
  1618. GAME( 1991, qsangoku, 0,     pang,    qtono1,   qsangoku, ROT0,   "Capcom", "Quiz Sangokushi (Japan)" )
  1619. GAME( 1991, block,    0,     pang,    block,    block,    ROT270, "Capcom", "Block Block (World)" )
  1620. GAME( 1991, blockj,   block, pang,    block,    block,    ROT270, "Capcom", "Block Block (Japan)" )
  1621. GAME( 1991, blockbl,  block, pang,    block,    blockbl,  ROT270, "bootleg", "Block Block (bootleg)" )
  1622.